package B刷题.排序;

/**
 * @author wei.zhao
 * @description: 88.合并两个有序数组
 * @date 2022年04月04日 14:53
 */
public class Code01_MergeSortedArray {

    /**
     * 技巧：因为nums1申请了m+n的空间，可以按照从大到小的顺序往num1中放数字，不需要再申请一个数组空间
     */
    public void merge(int[] nums1, int m, int[] nums2, int n) {
        int p1 = m - 1;
        int p2 = n - 1;
        for (int i = nums1.length - 1; i >= 0; i--) {
            if (p1 < 0) {
                nums1[i] = nums2[p2--];
            } else if (p2 < 0) {
                return;
            } else if (nums1[p1] >= nums2[p2]) {
                nums1[i] = nums1[p1--];
            } else {
                nums1[i] = nums2[p2--];
            }
        }
    }

}
